From 9a549acc99e635fcafb1d797e59ab28c7b53615b Mon Sep 17 00:00:00 2001 From: Jake Wires Date: Tue, 10 Apr 2007 11:40:43 -0700 Subject: [PATCH] [TAPDISK] Fix qcow initialization bug. fd_end was being incorrectly initialized upon open, leading to data corruption. Signed-off-by: Jake Wires --- tools/blktap/drivers/block-qcow.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/blktap/drivers/block-qcow.c b/tools/blktap/drivers/block-qcow.c index b0822f729d..2e5532a7cb 100644 --- a/tools/blktap/drivers/block-qcow.c +++ b/tools/blktap/drivers/block-qcow.c @@ -949,8 +949,14 @@ int tdqcow_open (struct disk_driver *dd, const char *name, td_flag_t flags) goto fail; } init_fds(dd); - s->fd_end = (final_cluster == 0 ? (s->l1_table_offset + l1_table_size) : - (final_cluster + s->cluster_size)); + + if (!final_cluster) + s->fd_end = s->l1_table_offset + l1_table_size; + else { + s->fd_end = lseek64(fd, 0, SEEK_END); + if (s->fd_end == (off64_t)-1) + goto fail; + } return 0; -- 2.30.2